package com.yx.changdao.web.controller;

import com.yx.changdao.common.annotation.AutoLog;
import com.yx.changdao.common.annotation.ShiroDesc;
import com.yx.changdao.common.data.Result;
import com.yx.changdao.common.entity.Worker;
import com.yx.changdao.common.exception.AlertException;
import com.yx.changdao.common.valid.Default;
import com.yx.changdao.service.WorkerService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

/**
 * @Description: <br/>
 * 工作人员表
 * <p>
 * <br/>
 * @Auther: wangzd
 * @create 2020/04/03 10:20
 */
@Validated
@RestController
@RequestMapping("/worker")
public class WorkerController {

    @Autowired
    private WorkerService workerService;


    /**
     * 添加工作人员表
     *
     * @param
     * @return Result
     */
    @AutoLog
    @PostMapping
    /*@RequiresPermissions("worker:add")
    @ShiroDesc("工作人员:添加")*/
    public Result add(@Validated(Default.class) Worker worker) throws AlertException {
        boolean b = workerService.save(worker);
        if (!b) {
            throw new AlertException("工作人员表添加失败");
        }
        return Result.ok("工作人员表添加成功");
    }

    /**
     * 获得指定id 工作人员表。
     *
     * @param
     * @return Result
     */
    @AutoLog
    @GetMapping("/{id}")
    /*@RequiresPermissions("worker:look")
    @ShiroDesc("工作人员:查看")*/
    public Result get(@PathVariable("id") String id) throws AlertException {
        Worker worker = workerService.getById(id);

        if (worker == null) {
            throw new AlertException("未找到相关工作人员表信息");
        }

        return Result.ok().data(worker);
    }


    /**
     * 更新工作人员表
     *
     * @param
     * @return Result
     */
    @AutoLog
    @PutMapping
    /*@RequiresPermissions("worker:save")
    @ShiroDesc("工作人员:保存")*/
    public Result update(@Valid Worker worker,
                         @NotNull(message = "员工id不能为空") Integer id) throws AlertException {

        boolean b = workerService.updateById(worker);
        if (!b) {
            throw new AlertException("工作人员表更新失败");
        }

        return Result.ok("工作人员表更新成功");
    }


    /**
     * 删除工作人员表
     *
     * @param
     * @return Result
     */
    @AutoLog
    @DeleteMapping("/{id}")
    /*@RequiresPermissions("worker:del")
    @ShiroDesc("工作人员表:删除")*/
    public Result delete(@PathVariable("id") String id) throws AlertException {
        boolean b = workerService.removeById(id);

        if (!b) {
            throw new AlertException("工作人员表删除失败");
        }

        return Result.ok("删除工作人员表成功");
    }


    /**
     * 添加两个房屋管理的虚权限,配合前台的两个房屋管理
     */
    @RequiresPermissions("community:township:list")
    @ShiroDesc("乡镇:总控列表")
    public void  per1(){

    }

    @RequiresPermissions("community:execute:list")
    @ShiroDesc("乡镇:执行列表")
    public void  per2(){

    }
}
